package com.sunday.common.netty.e3_Pojo.client;

import com.sunday.common.netty.e3_Pojo.UnixTime;
import io.netty.buffer.AbstractReferenceCountedByteBuf;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

/**
 * 在你提供的 TimeDecoder 类中，并不需要显式调用 ReferenceCountUtil.release 方法。
 * 这是因为 ByteToMessageDecoder 将负责处理 ByteBuf 的释放。
 * 当 decode 方法完成后，Netty 会自动处理引用计数的释放。
 * {@link AbstractReferenceCountedByteBuf#release()} 会被调用。
 */
public class TimeDecoder extends ByteToMessageDecoder {

    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) {
        if (in.readableBytes() < 4) {
            return;
        }
        out.add(new UnixTime(in.readUnsignedInt()));
    }
}
